package com.sw.youvote.client.areas;

import java.util.List;

import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sw.youvote.client.QuizListGUI;
import com.sw.youvote.shared.objects.QuizBean;

public class ContentArea {
	
	private VerticalPanel panel;
	private HorizontalPanel publicosDestacadosPanel;
	private CaptionPanel ultimoDiaPanel;
	private CaptionPanel concursosParticipandoPanel;
	private PublicosDestacadosArea publicosDestacadosArea;
	private UltimoDiaArea ultimoDiaArea;
	private ConcursosParticipandoArea concursosParticipandoArea;
	private QuizListGUI gui;
	
	public ContentArea(QuizListGUI parentGui){
	
	panel = new VerticalPanel();	
	panel.setWidth("100%");
	panel.setStylePrimaryName("header");
	panel.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP);
	publicosDestacadosPanel = new HorizontalPanel();
	publicosDestacadosArea = new PublicosDestacadosArea(publicosDestacadosPanel);
	panel.add(publicosDestacadosPanel);
	ultimoDiaPanel = new CaptionPanel();
	ultimoDiaArea = new UltimoDiaArea(ultimoDiaPanel);
	panel.add(ultimoDiaPanel);
	concursosParticipandoPanel = new CaptionPanel();
	concursosParticipandoArea = new ConcursosParticipandoArea(concursosParticipandoPanel);
	panel.add(concursosParticipandoPanel);
	gui = parentGui;
	
	}
	public VerticalPanel getPanel(){
		return panel;
	}
	
	public UltimoDiaArea getUltimoDiaArea(){
		return ultimoDiaArea;
	}
	
public void service_eventListRetrievedFromService(List<QuizBean> result) {
        
        // ACTUALIZAR DESTACADOS
        gui.setQuizs(result);        
        this.publicosDestacadosPanel.clear();
        this.publicosDestacadosPanel.setSpacing(20);
        
        Grid tablitadatos;
        Grid miniaturaGrid;
        Image miniatura;
        Label nombre;
        Label descripcion;
        Label email;
        Anchor enlaceEdicion;
        Anchor enlaceRemove;
        
        for (QuizBean quiz : result) {
        	
        	miniatura = new Image(quiz.getImageurl());
        	miniatura.setSize("200", "100");
        	nombre = new Label(quiz.getName());
        	descripcion = new Label (quiz.getDescription());
        	email = new Label (quiz.getCreatorMail());
        	enlaceEdicion = new Anchor("Edit");
        	enlaceRemove = new Anchor("Remove");
        	nombre.setStyleName("nombreminiatura");
        	descripcion.setStyleName("descripcionminiatura");
        	email.setStyleName("emailminiatura");
        	
        	tablitadatos = new Grid (1,2); 
        	tablitadatos.setStylePrimaryName("gridlist");
        	
        	tablitadatos.setBorderWidth(0);
        	tablitadatos.setCellPadding(4);
        	
        	tablitadatos.setWidget(0,0, enlaceEdicion);
        	tablitadatos.setWidget(0,1, enlaceRemove);
        	
        	miniaturaGrid = new Grid(5,1);
            miniaturaGrid.setStylePrimaryName("gridlist");
        	miniaturaGrid.setBorderWidth(0);
        	miniaturaGrid.setCellPadding(4); 
        	
        	miniaturaGrid.setWidget(0, 0, miniatura);
        	miniaturaGrid.setWidget(1, 0, nombre);
        	miniaturaGrid.setWidget(2, 0, descripcion);
        	miniaturaGrid.setWidget(3, 0, email);
        	miniaturaGrid.setWidget(4, 0, tablitadatos);
        	
        	publicosDestacadosPanel.add(miniaturaGrid);
        }
        
        // ACTUALIZAR ULTIMO DIA
        this.ultimoDiaArea.getQuizGridUltimoDia().clear();
        this.ultimoDiaArea.getQuizGridUltimoDia().resizeRows(gui.getQuizs().size());
        this.ultimoDiaArea.getQuizGridUltimoDia().setStylePrimaryName("gridlist");
        this.ultimoDiaArea.getQuizGridUltimoDia().setBorderWidth(1);
        this.ultimoDiaArea.getQuizGridUltimoDia().setCellPadding(4);
 
        int row = 0;
        
        for (QuizBean quiz : result) {
        	this.ultimoDiaArea.getQuizGridUltimoDia().setWidget(row, 0, new Label(quiz.getName()));
        	this.ultimoDiaArea.getQuizGridUltimoDia().setWidget(row, 1, new Label (quiz.getDescription()));
        	this.ultimoDiaArea.getQuizGridUltimoDia().setWidget(row, 2, new Label (quiz.getCreatorMail()));
        	this.ultimoDiaArea.getQuizGridUltimoDia().setWidget(row, QuizListGUI.EDIT_LINK, new Anchor("Edit"));
        	this.ultimoDiaArea.getQuizGridUltimoDia().setWidget(row, QuizListGUI.REMOVE_LINK, new Anchor("Remove"));
            row ++;
        }
     
        // ACTUALIZAR CONCURSOS EN LOS QUE PARTICIPO
        this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().clear();
        this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().resizeRows(gui.getQuizs().size());
        this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setStylePrimaryName("gridlist");
        this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setBorderWidth(1);
        this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setCellPadding(4);
 
        row = 0;
        
        for (QuizBean quiz : result) {
        	this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setWidget(row, 0, new Label(quiz.getName()));
        	this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setWidget(row, 1, new Label (quiz.getDescription()));
        	this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setWidget(row, 2, new Label (quiz.getCreatorMail()));
        	this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setWidget(row, QuizListGUI.EDIT_LINK, new Anchor("Edit"));
        	this.concursosParticipandoArea.getQuizGridConcursosParticipandoPanel().setWidget(row, QuizListGUI.REMOVE_LINK, new Anchor("Remove"));
            row ++;
        }
    }
}
